home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Click 1 (Special Issue)
/
fantasy.iso
/
Demo The Druid King
/
DemoMap.pak
/
SEQUENCES_S01_MAIN.VS
< prev
next >
Wrap
Text File
|
2001-04-11
|
8KB
|
284 lines
// void
NamedObj Keltill, Pavonius, Daranix, Ogox, LudgunumMessenger;
ObjSet GaulArmy, TeutonArmy, RomanArmy, Council;
ObjList TeutonsDie;
TPoint pt, pt2;
TRect rc;
Conversation conv;
Unit Gaul1, Gaul2;
Unit invalid;
bool bPavoniusLeft, bHeroFound, bFirst;
int i, time;
// players map
// 1 - gauls
// 2 - teutons
// 3 - romans
// 4 - non-controllable gauls (messengers etc.) - same color as gauls
// 5 - enemy gauls -- same colour as gauls
//init part
cls();
PlayersAlly(1,3);
PlayersAlly(3,4);
PlayersAlly(1,4);
PlayersShareView(1,4);
RunSequence("s01_find_ogox");
RunSequence("s01_repair_wkorthe");
pt.Set(6400,14500);
View(pt,false);
// spawn Keltill
Keltill = CreateNamedObj("Keltill", PlaceEx("Keltill", 6400, 14200, 1));
Keltill.obj.AsUnit.SetExperience(50);
// spawn gaul army
PlaceBlockEx("GArcher", 1, 6300, 14300, 10, 1, 50, 50, "GaulArmy");
PlaceBlockEx("GAxeman", 1, 6300, 14350, 10, 2, 50, 50, "GaulArmy");
GaulArmy = GetObjSet("GaulArmy");
GaulArmy.AddCommand(true,"attach", Keltill.obj);
GaulArmy.KillCommand();
// spawn first Teuton army and attack
PlaceBlockEx("TeutonWolf", 2, 6300, 15200, 10, 3, 50, 100, "TeutonArmy");
TeutonArmy = GetObjSet("TeutonArmy");
pt.Set(6300, 14300);
TeutonArmy.AddCommand(true, "advance", pt);
TeutonArmy.KillCommand();
// battle
while (TeutonArmy.Count() > 25) {
Sleep(500);
//Keltill.obj.health=Keltill.obj.maxhealth;
}
// retreat
pt.Set(4700, 14000);
TeutonArmy.AddCommand(true,"move", pt);
pt.Set(3300, 12600);
TeutonArmy.AddCommand(false,"move", pt);
TeutonArmy.KillCommand();
//select X of them to remain
TeutonsDie = TeutonArmy.GetObjList();
for (i=0; i<15; i+=1) {
//TeutonsDie[i].AddCommand(false, "attack", Keltill.obj);
TeutonsDie[i].KillCommand();
TeutonsDie[i].KillCommand(); //kill the two move's
}
Sleep(4000);
EnvWriteInt("/NewNote", 9);
Run("currentmap/mission_notes.vs");
//rc.Set(3000,12000,4400,13000);
rc.Set(2642, 11370, 4250, 13384);
time = GetTime();
bFirst = true;
while(1) {
if (ptInRect(Keltill.obj.pos, rc)) break;
if (bFirst)
if (GetTime() - time > 60000) { //change notes
bFirst = false;
EnvWriteInt("/Note9", 0);
EnvWriteInt("/NewNote", 14);
Run("currentmap/mission_notes.vs");
}
Sleep(500);
}
// spawn Pavonius and roman army
PlaceBlockEx("Pretorian", 3, 3500, 12000, 5, 5, 50, 50, "PavoniusArmy");
RomanArmy = GetObjSet("PavoniusArmy");
Pavonius = CreateNamedObj("Pavonius", PlaceEx("Pavonius", 3650, 12050, 3));
Pavonius.obj.AsUnit.SetExperience(20);
RomanArmy.AddCommand(true,"attach", Pavonius.obj);
RomanArmy.KillCommand();
// join battle
pt.Set(4000,12400);
Pavonius.obj.AddCommand(true, "advance", pt);
Pavonius.obj.KillCommand();
// spawn second teuton army
EnvWriteInt("/Note9", 0);
EnvWriteInt("/Note14", 0);
PlaceBlockEx("TeutonWolf",2 , 3200, 12600, 6, 4, 100, 100, "TeutonArmy");
cls();
pt.Set(3800,12200);
TeutonArmy.AddCommand(true,"advance", pt);
pt.Set(3900,12300);
TeutonArmy.AddCommand(false,"advance", pt);
TeutonArmy.KillCommand();
//a warrior comes to announce Milys' death
RunSequence("s01_milys_messenger");
// battle
while (TeutonArmy.Count()>0) {
Sleep(300);
//Keltill.obj.health=Keltill.obj.maxhealth;
//Pavonius.obj.health=Pavonius.obj.maxhealth;
}
if (!Pavonius.IsDead()) Pavonius.obj.KillCommand();
Keltill.obj.KillCommand();
Sleep(3000); //give time for the killcommands
if (!Pavonius.IsDead()) {
while (1) {
if (Keltill.obj.DistTo(Pavonius.obj) < 600) break;
Sleep(500);
}
conv.Init("DM C1", 2, 0);
conv.Run();
//romans retreat according to the conversation
if (EnvReadString("/DM C1/Return Value") == "leave") {
pt.Set(2100,10400);
Pavonius.obj.AddCommand(true,"move", pt);
pt.Set(2500,9650);
Pavonius.obj.AddCommand(false,"move", pt);
pt.Set(3500,9000);
Pavonius.obj.AddCommand(false,"move", pt);
Pavonius.obj.KillCommand();
EnvWriteInt("/s01/PavoniusDest.x", pt.x);
EnvWriteInt("/s01/PavoniusDest.y", pt.y);
RunSequence("s01_pavonius_leave");
bPavoniusLeft = true;
} else {
Pavonius.obj.AddCommand(true,"move", point(4760, 12848));
Pavonius.obj.AddCommand(false,"move", point(4917, 12865));
Pavonius.obj.AddCommand(false,"move", point(5031, 12804));
Pavonius.obj.AddCommand(false,"move", point(5101, 12677));
Pavonius.obj.AddCommand(false,"move", point(5682, 11450));
Pavonius.obj.AddCommand(false,"move", point(6006, 10653));
Pavonius.obj.KillCommand();
PlayersShareView(1,3);
PlayersShareSupport(1,3);
bPavoniusLeft = false;
}
} else { // Pavonius is dead
bPavoniusLeft = true;
}
//wait to repair Wkorthe
while (1) {
if (EnvReadInt("/s01/WkortheRepaired") == 1) break;
Sleep(5000);
}
//give the player some time to wander around, to have chance of finding the extra hero etc.
for (i=0; i<48; i+=1) {
Sleep(2500);
if (EnvReadInt("/s01/OgoxFound") == 1) {
Sleep(20000);
break;
}
}
// Change view to Daranix
SetPlayer(8); //fog fadeout
cls();
//pr("Meanwhile in Gergovia...");
Sleep(2000);
pt.Set(1200, 13200);
View(pt, false);
SetPlayer(1);
//spawn Daranix
Daranix = CreateNamedObj("Daranix", PlaceEx("Daranix", 1600, 12500, 1));
//ludgunum messanger comes to Daranix
BlockUserInput();
HideZoomMap();
LudgunumMessenger = CreateNamedObj("Messenger", PlaceEx("GaulMessenger2", 1300, 13200, 4));
pt.Set(1600,12600);
//LudgunumMessenger.obj.AddCommand(true,"move",pt);
LudgunumMessenger.obj.AddCommand(true,"approach",Daranix.obj);
LudgunumMessenger.obj.KillCommand();
/*
while (1) {
if (Dist(LudgunumMessenger.obj.pos, Daranix.obj.pos) < 150) break;
Sleep(500);
} */
while (LudgunumMessenger.obj.script == "approach") Sleep(500);
conv.Init("DM C4", 2, 0);
//conv.SetActor("Daranix", Daranix.obj.AsUnit,"assets/classes/images/demoactors/daranix.bmp");
//conv.SetActor("Messenger", LudgunumMessenger, "assets/classes/images/demoactors/villager.bmp");
conv.Run();
LudgunumMessenger.obj.SetPlayer(1);
UnblockUserInput();
//gather the war council
Ogox = GetNamedObj("Ogox");
if (EnvReadInt("/s01/OgoxFound") == 1) {
bHeroFound = true;
cls();
} else {
bHeroFound = false;
//EnvWriteInt("/s01/OgoxThreadDie",1);
}
Council = GetObjSet("Council");
if (!bPavoniusLeft) {
Pavonius.obj.AddToGroup(Council);
//PlayersShareControl(1,3); //allow user to command Pavonius
Pavonius.obj.AsHero.DetachArmy();
Pavonius.obj.AddCommand(true, "move", point(4749, 12865));
Pavonius.obj.AddCommand(false, "move", point(3350,11877));
Pavonius.obj.AddCommand(false, "move", point(1426,12582));
Pavonius.obj.KillCommand();
}
if (bHeroFound) Ogox.obj.AddToGroup(Council);
Keltill.obj.AddToGroup(Council);
Daranix.obj.AddToGroup(Council);
//LudgunumMessenger = GetNamedObj("Messenger");
LudgunumMessenger.obj.AddToGroup(Council);
EnvWriteString("/NewNote", 3);
Run("currentmap/mission_notes.vs");
//rc.Set(1362, 12345, 1637, 12673);
rc.Set(1290, 12242, 1675, 12672);
while (1) {
if (Council.Count() == Council.InRect(rc)) break;
Sleep(500);
}
Sleep(1500);
conv.Init("DM C5", 2, 0);
//conv.SetActor("Keltill", Keltill.obj.AsUnit,"");
//conv.SetActor("Daranix", Daranix.obj.AsUnit,"");
//conv.SetActor("Messenger", LudgunumMessenger ,"assets/classes/images/demoactors/messenger.bmp");
if (bPavoniusLeft)
conv.SetActor("Pavonius",invalid,"");
if (bHeroFound) {
//conv.SetActor("Hero",Ogox.obj.AsUnit,"assets/classes/images/demoactors/villager.bmp","Ogox");
conv.SetActor("Hero",Ogox.obj.AsUnit,"","Ogox");
} else {
conv.SetActor("Hero",invalid,"");
}
conv.Run();
EnvWriteInt("/Note3", 0);
if (!bPavoniusLeft) {
Pavonius.obj.AddCommand(true, "move", point(4760, 12848));
Pavonius.obj.AddCommand(false, "move", point(6006, 10653));
Pavonius.obj.KillCommand();
}
//end